package question2;

import java.util.Scanner;

public class Main2 {

    public static void main(String[] rags){
        //1、读取并解析得到矩阵二维数组
        String[][] matrix = readMatrix(new Scanner(System.in).nextLine());
        //2、获取合作圈数
        int num = calVNum(matrix);
        //3、输出结果
        System.out.println(num);

    }
    // 解析得到矩阵二维数组
    private static String[][] readMatrix(String str){
        String[] rows = str.split("\\|");
        String[][] matrix = new String[rows.length][rows.length];
        for(int i = 0;i<rows.length;i++){
            matrix[i] = rows[i].split(" ");
        }
        return matrix;
    }

    private static int calVNum(String[][] matrix){
        //合作圈数
        int count = 0;
        //顶点是否访问过
        boolean[] visited = new boolean[matrix.length];
        //遍历顶点
        for(int i= 0;i<matrix.length;i++){
            if(visited[i]){
                continue;
            }
            count++;
            //所有和顶点i连通的其他顶点，在经过dfs遍历后visited都是true
            //每次深度优先遍历都是一个合作圈
            dfs(matrix,visited,i);
        }
        return count;
    }
    private static void dfs(String[][] matrix ,boolean[] visited,int rowIndex){
        if(visited[rowIndex]){
            return ;
        }
        visited[rowIndex] = true;
        for(int i=0;i<matrix.length;i++){
            if(i==rowIndex || visited[i]){
                continue;
            }
            //如果指定位置是1 则表示节点联通，则遍历
            if("1".equals(matrix[rowIndex][i])){
                dfs(matrix,visited,i);
            }
        }

    }
}
